/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.jomijushi.fid.servicios;


import com.jomijushi.fid.dao.DimensionFotoImplementsDAO;
import com.jomijushi.fid.dao.DimensionFotoInterfazDAO;
import com.jomijushi.fid.dominio.FidDimensionFoto;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.PersistenceContext;


/**
 * Servicio de consultas y operaciones de datos para la entidad
 * DimensionFoto.
 * @author Pedro Shiguihara J
 */
public class DimensionFotoImplementsService extends JpaService<Integer,FidDimensionFoto> implements DimensionFotoInterfazService {


    /* Atributos */
    private DimensionFotoInterfazDAO dimensionFotoDAO = new DimensionFotoImplementsDAO();
  


   /**
    * Dado un objeto FidDimensionFoto, se registra en la base de datos.
    * @param objDimensionFoto Objeto FidDimensionFoto que será registrada en la base de datos.
    */
    public void crearDimensionFoto(FidDimensionFoto objDimensionFoto) {
        EntityManager em = emf.createEntityManager();
        em.getTransaction().begin();
        dimensionFotoDAO.setEntityManager(em);
        dimensionFotoDAO.persist(objDimensionFoto);
        em.getTransaction().commit();
        em.close();
    }


    /**
     * Dado un objeto FidDimensionFoto, se modifica en la base de datos.
     * @param objDimensionFoto Objeto FidDimensionFoto que será modificada en la base de datos.
     */
    public void editarDimensionFoto(FidDimensionFoto objDimensionFoto) {
        EntityManager em = emf.createEntityManager();
        em.getTransaction().begin();
        dimensionFotoDAO.setEntityManager(em);
        dimensionFotoDAO.merge(objDimensionFoto);
        em.getTransaction().commit();
        em.close();
    }


    /**
     * Dado un objeto FidDimensionFoto, se elimina de la base de datos.
     * @param id ID de un objeto FidDimensionFoto que será eliminada de la base de datos.
     */
    public void eliminarDimensionFoto(int id) {
        EntityManager em = emf.createEntityManager();
        em.getTransaction().begin();
        dimensionFotoDAO.setEntityManager(em);
        FidDimensionFoto fidDimensionFoto = null;
        fidDimensionFoto = em.getReference(FidDimensionFoto.class, id);
        fidDimensionFoto.getId();
        dimensionFotoDAO.remove(fidDimensionFoto);
        em.getTransaction().commit();
        em.close();
    }


     /**
     * Dado un id de un objeto FidDimensionFoto, se recupera de la base de datos.
     * @param id Identificador (id) del objeto FidDimensionFoto.
     * @return id ID de un objeto FidDimensionFoto que será recuperada de la base de datos.
     */
    public FidDimensionFoto buscarDimensionFoto(int id)
    {
        EntityManager em = emf.createEntityManager();
        try {
            dimensionFotoDAO.setEntityManager(em);
            FidDimensionFoto frt = null;
            frt = dimensionFotoDAO.findById(id);
            return frt;
        } finally {
            em.close();
        }
    }


    /**
     * Dado un conjunto de parámetros, se recuperará una lista de objetos FidDimensionFoto de la base de datos.
     * @param hayConsulta Determina si el parametro "jpql" viene con una consulta (true) o vacío (false).
     * @param jpql Consulta JPQL para retornar objetos de la base de datos.
     * @param esListarTodo Indicador para determinar si se hará un listado de todos los objetos encontrador (true)
     * o sólo de una parte, segmentada por los parametros "nRegs" y "regIni" (false)
     * @param nRegs Cantidad de registros a ser retornados de la base de datos de todos los encontrados.
     * @param regIni Número de registro recuperado desde donde parte el conteo de los nRegs a ser listados.
     * @return objDimensionFoto Objeto FidDimensionFoto que será recuperada de la base de datos.
     */
    public List<FidDimensionFoto> listarDimensionesFoto(boolean hayConsulta, String jpql, boolean esListarTodo, int nRegs, int regIni)
    {
        EntityManager em = emf.createEntityManager();
        try {
            dimensionFotoDAO.setEntityManager(em);
            List<FidDimensionFoto> lst = dimensionFotoDAO.listarDimensionFoto(hayConsulta, jpql, esListarTodo, nRegs, regIni);
            return lst;
        } finally {
            em.close();
        }
    }


}
